home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Risc World 3
/
Risc World 3.iso
/
SOFTWARE
/
ISSUE6
/
PD
/
PDF
/
pdf
/
c++
/
DocViewChoices
< prev
next >
Wrap
Text File
|
2003-02-14
|
5KB
|
131 lines
//--------------------------------------------------------------------------
//
// Copyright (c) 2002, Colin Granville
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or
// without modification, are permitted provided that the following
// conditions are met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following
// disclaimer in the documentation and/or other materials
// provided with the distribution.
//
// * The name Colin Granville may not be used to endorse or promote
// products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.
//
//--------------------------------------------------------------------------
#include "DocViewChoices.h"
#include "uCompare.h"
#include "fstream.h"
#include "ChoicesFilePath.h"
#include <stdlib.h>
class DefaultChoices
{
public:
int flags;
int scale;
int rotation;
friend DefaultChoices& defaultChoices();
private:
DefaultChoices();
};
DefaultChoices::DefaultChoices()
: flags(DocViewChoices::HIGHLIGHT_LINKS),
scale(100),
rotation(0)
{
string file=getChoicesFilePath("Setup");
char buf[128];
ifstream in(file.c_str());
if (!in) return;
while (in.getline(buf,sizeof(buf)))
{
if (uStartsWith(buf,"NoImages:")) { if (buf[9]=='1') flags |= DocViewChoices::NO_IMAGES; }
else if (uStartsWith(buf,"NoText:")) { if (buf[7]=='1') flags |= DocViewChoices::NO_TEXT; }
else if (uStartsWith(buf,"NoType3Fonts:")) { if (buf[13]=='1') flags |= DocViewChoices::NO_TYPE3_FONTS; }
else if (uStartsWith(buf,"NoDrawings:")) { if (buf[11]=='1') flags |= DocViewChoices::NO_DRAWINGS; }
else if (uStartsWith(buf,"HighlightLinks:")) { if (buf[15]!='1')
flags &= ~DocViewChoices::HIGHLIGHT_LINKS; }
else if (uStartsWith(buf,"Scale:")) scale=atoi(buf+6);
else if (uStartsWith(buf,"Rotation:")) rotation=atoi(buf+9);
}
}
DefaultChoices& defaultChoices()
{
static DefaultChoices p;
return p;
}
//*************************************************************************
//*************************************************************************
//*************************************************************************
DocViewChoices::DocViewChoices()
: flags(defaultChoices().flags),
scale(defaultChoices().scale),
rotation(defaultChoices().rotation)
{
}
//*************************************************************************
DocViewChoices::~DocViewChoices() {}
//*************************************************************************
void DocViewChoices::setScale(int s)
{
if (s>800) s=800;
if (s<25) s=25;
scale=s;
}
//*************************************************************************
void DocViewChoices::save()
{
string file=getChoicesFilePath("Setup");
ofstream out(file.c_str());
if (!out) return;
defaultChoices().flags=flags;
defaultChoices().scale=scale;
defaultChoices().rotation=rotation;
out << "NoImages:" << (getNoImages()? '1':'0') << endl
<< "NoText:" << (getNoText()? '1':'0') << endl
<< "NoType3Fonts:" << (getNoType3Fonts()? '1':'0') << endl
<< "NoDrawings:" << (getNoDrawings()? '1':'0') << endl
<< "HighlightLinks:" << (getHighlightLinks()? '1':'0') << endl
<< "Scale:" << scale << endl
<< "Rotation:" << rotation << endl;
}